#include "Timer.h"
#include "DriveRoutines.h"

#ifndef DRIVE_TESTS_H_
#define DRIVE_TESTS_H_



enum DRIVE_SCORE 
{
	SEQ_WRITE_400 = 0,
	SEQ_READ_400 = 1,
	SEQ_WRITE_40 = 2,
	SEQ_READ_40 = 3,
	SEQ_WRITE_4 = 4,
	SEQ_READ_4 = 5,
	SEQ_DELETE = 6,
	REL_WRITE = 7,
	REL_READ = 8,
	PRG_WRITE_4K = 9,
	PRG_READ_4K = 10,
	PRG_WRITE_8K = 11,
	PRG_READ_8K = 12,
	PRG_WRITE_12K = 13,
	PRG_READ_12K = 14
};

const char *const tests[] =
{
	{ "seq write 400" },
	{ "seq read 400" },
	{ "seq write 40" },
	{ "seq read 40" },
	{ "seq write 4" },
	{ "seq read 4" },
	{ "seq delete" },
	{ "rel write" },
	{ "rel read" },
	{ "prg write 2k" },
	{ "prg read 2k" },
	{ "prg write 4k" },
	{ "prg read 4k" },
	{ "prg write 24k" },
	{ "prg read 24k" }
};

void benchmarkDrive(const unsigned char driveIndex);
tr_t* createSeqFile(unsigned char driveNumber, unsigned int length);
tr_t* readSeqFile(unsigned char driveNumber, unsigned int length);
tr_t* deleteSeqFile(unsigned char driveNumber);
tr_t* createRelFile(unsigned char driveNumber);
tr_t* randomReadRelFile(unsigned char driveNumber);
tr_t* deleteRelFile(unsigned char driveNumber);
tr_t* createPrgFile(unsigned char driveNumber, unsigned int bytes);
tr_t* readPrgFile(unsigned char driveNumber, unsigned int bytes);
tr_t* deletePrgFile(unsigned char driveNumber);
tr_t* deleteFile(unsigned char driveNumber, const char* filename);

void selectDrives();
#endif